﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<vector>
using namespace std;

class BinInsert {
public:
    int binInsert(int n, int m, int j, int i)
    {
        //vector<int> _n, _m;
        //while (n)
        //{
        //    _n.push_back(n % 2);
        //    n /= 2;
        //}
        //while (m)
        //{
        //    _m.push_back(m % 2);
        //    m /= 2;
        //}
        ////swap(i, j);
        //for (int k = 0; j <= i && k < _m.size(); j++, k++)
        //{
        //    _n[j] = _m[k];
        //}
        ////reverse(_n.begin(),_n.end());
        ////reverse(_m.begin(),_m.end());
        //int sum = 0;
        //for (i = 0; i < _n.size(); i++)
        //{
        //    sum += _n[i] * pow(2, i);
        //}

        //return sum;
        // write code here

        return n | (m << j);
    }
};

//int main()
//{
//    BinInsert b;
//    cout<<b.binInsert(1024, 19, 2, 6);
//
//    int a = 1;
//    int& c = a;
//    int* p;
//    return 0;
//}
#include<math.h>
//int isP(int k)
//{
//    int i = 0;
//    for (i = 2; i <= sqrt(k); i++)
//    {
//        if (k % i == 0)
//        {
//            return 0;
//        }
//    }
//    return 1;
//}
//int main()
//{
//    int n = 0;
//    cin >> n;
//
//    int a = n / 2, b = n / 2;
//    while (a >= 1 && b < n)
//    {
//        if ((a % 2 != 0 || a == 2) && (b % 2 != 0 || b == 2) && isP(a) && isP(b))
//        {
//            cout << a << endl;
//            cout << b << endl;
//            break;
//        }
//        a--;
//        b++;
//    }
//    return 0;
//}

//template<class T> 
//class BigNumber 
//{
//    
//public:
//    BigNumber(T i) 
//        :n(i) 
//    {}
//    BigNumber operator+(BigNumber b) const
//    {
//        return BigNumber(n + b.n);
//    }
//    long n;
//};
//
//int main()
//{
//    BigNumber<long> b1(1), b2(2);
//    cout << 3 + 3 << endl;
//    //cout << (3+b1).n << endl;
//    cout << (b2+3).n << endl;
//    cout << (b1+b2).n << endl;
//    return 0;
//}

class A
{
public:
  void f() { cout << "A::f()" << endl; }
  int a;
};



class B : public A
{
public:
    void f(int a) { cout << "B::f()" << endl; }
    int a;
};
//int main()
//{
//    B b;
//    //b.f();
//    return 0;
//
//}
class Base1 
{ 
public: 
    int _b1; 
};
class Base2 
{ 
public: 
    int _b2;
};
class Derive : public Base1, public Base2
{
public: 
    int _d;
};
int main()
{
    Derive d;
    Base1* p1 = &d;
    Base2* p2 = &d;
    Derive* p3 = &d;

    return 0;
}
